import { createStore } from 'vuex'
import { login,getinfo } from '~/api/manager'
import { setToken,removeToken } from '~/composables/auth'


// 创建一个新的 store 实例
const store = createStore({
  state () {
    return {
      //用户信息
      user:{},

      //侧边宽度
      asideWidth : "250px",

      menus : [],
      
      ruleNames : [],
    }
  },
  mutations: {
    //记录用户相关信息
    SET_USERINFIFO(state,user){
      state.user = user
    },
    //展开-缩起侧边宽度
    handelAsideWidth(state){
      state.asideWidth = state.asideWidth == "250px" ? "64px" : "250px"
    },

    SET_MENUS(state,menus){
      state.menus = menus
    },
    SET_RULENAMES(state,ruleNames){
      state.ruleNames = ruleNames
    },
  },
  actions:{
    //登录
    login({ commit },{ username,password }){
      return new Promise((resolve,reject)=>{
        login(username,password).then(res=>{
          console.log(res);
          setToken(res.token)

          resolve(res)
        }).catch(err=>reject(err))
      })
    },

    //获取当前登录用户信息
    getinfo({ commit }){
      return new Promise((resolve,reject)=>{
        getinfo().then(res=>{
          commit("SET_USERINFIFO",res)
          //console.log(res);
          commit("SET_MENUS",res.menus)
          commit("SET_RULENAMES",res.ruleNames)

          resolve(res)
        }).catch(err=>reject(err))
      })
    },
    //退出登录
    logout({ commit }){
      //移除cookie里的token
      removeToken()

      //清除当前用户状态 vuex
      commit("SET_USERINFIFO",{})

    }
  }
})

export default store